﻿using System;
using System.Collections.Generic;
using System.Text;

namespace LeetcodeTest._100._10
{
    public class Leetcode9
    {
        public void Test()
        {
            try
            {
                bool a =IsPalindrome(1000030001);
                a = IsPalindrome(-10);
            }
            catch (Exception ex)
            { }
        }

        /*
         9. Palindrome Number

            Determine whether an integer is a palindrome. Do this without extra space.
             */
        public bool IsPalindrome(int x)
        {
            //原以为用string不能满足要求，结果通过了。。我艹
            if (x < 0)
                return false;
            if (x < 10)
                return true;
            string str = x.ToString();
            int numCount = str.Length;
            for(int i =0; i < numCount / 2; i++)
            {
                if (str[i] == str[str.Length - i - 1])
                    continue;
                return false;
            }
            return true;
        }
        //public bool IsPalindrome2(int x)
        //{
        //    //改方法错误
        //    if (x < 0)
        //        return false;
        //    if (x < 10)
        //        return true;
        //    int numCount = Math.Abs(x).ToString().Length;
        //    int iDivisor = (int)Math.Pow(10, numCount-1);
        //    int iMultiplier = 10;
        //    for (int i = 0; i < numCount / 2; i++)
        //    {
        //        if (i == 0)
        //        {
        //            if (x / iDivisor == x % iMultiplier)
        //            {
        //                x = x % iDivisor;
        //                continue;
        //            }
        //            return false;
        //        }
        //        if (i == 1)
        //        {
        //            if (x / (iDivisor / 10) == (x % (10 * iMultiplier)) / iMultiplier)
        //            {
        //                x = x % (iDivisor / 10);
        //                continue;
        //            }
        //            return false;
        //        }

        //        if (x / (iDivisor / (int)Math.Pow(10,i)) == (x % ((int)Math.Pow(iMultiplier,i))) / ((int)Math.Pow(iMultiplier, (i - 1))))
        //        {
        //            x = x % (iDivisor / (int)Math.Pow(10, i));
        //            continue;
        //        }

        //        return false;
        //    }
        //    return true;
        //}
    }
}
